#pragma once

#include "FITKInterfaceCustomDataAPI.h"
#include "FITK_Kernel/FITKCore/FITKAbstractNDataObject.h"
#include "FITK_Kernel/FITKCore/FITKVarientParams.h"
#include "FITK_Kernel/FITKCore/FITKAbstractDataManager.hpp"

namespace Interface
{
	class FITKInterfaceCustomDataAPI FITKCDDataFluid : public Core::FITKAbstractNDataObject, public Core::FITKVarientParams
    {
    public:
        explicit FITKCDDataFluid() = default;
        virtual ~FITKCDDataFluid() = default;

		// SET
		void setMaterial(int nVal);
		void setInitialize_Hydrostatic_Pressure(bool bVal);
		void setFree_Surface(double* dVal);
		void setDynamic_Viscosity(double dVal);
		void setKinematic_Viscosity(double dVal);
		void setArtificial_Viscosity(double dVal);

		// GET
		int getMaterial();
		bool getInitialize_Hydrostatic_Pressure();
		double* getFree_Surface();
		double getDynamic_Viscosity();
		double getKinematic_Viscosity();
		double getArtificial_Viscosity();
    };


	class FITKInterfaceCustomDataAPI FITKCDDataFluidManager : public Core::FITKAbstractDataManager<FITKCDDataFluid>
	{
	public:
		explicit FITKCDDataFluidManager() = default;
		virtual ~FITKCDDataFluidManager() = default;
	};
}

